package com.sl.utils;

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;


/**
 * Класс для работы с javascript
 * @author dgrigoriev
 *
 */
public class JavaScripts {
	
	
	JavascriptExecutor executor;																
	WebDriver driver;
	public JavaScripts(WebDriver driver) {	
		this.driver = driver;
		this.executor  = (JavascriptExecutor)driver;										
			
		}
	
	
	/**
	 * Метод выполняющий клик по невидимому элементу
	 * На данный момент используется для перехода по меню в AdminUI
	 * @param element
	 */
	public void clickOnInvisibleElement(WebElement element) {
	    
	    String script = "var object = arguments[0];"
	            + "var theEvent = document.createEvent(\"MouseEvent\");"
	            + "theEvent.initMouseEvent(\"click\", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);"
	            + "object.dispatchEvent(theEvent);"
	            ;
	         
	    executor.executeScript(script, element);
	}
	
	/**
	 * Метод очищает видимые LinkedList и List2List если они присутствуют на странице.
	 * @param WebElement
	 */
	public void cleaningTabs(WebElement element){
		String script = "$('[form-tab] [ng-click=\"removeAll()\"],[ng-click=\"removeRow(row)\"]:visible').click();"; 
		executor.executeScript(script);
		
	}
	
	/**
	 * Метод возвращает название таба на котором находится элемент
	 * @param WebElement
	 * @return String
	 */
	public String getHiddenLabel(WebElement element){
		
		String script = "return arguments[0].textContent";
		String label = (String) executor.executeScript(script, element);
		return label;
		
		
	}

}
